How To Build NTP for ARM


Intro


In this How To we are going to build NTP 4.2.6p5 with our GCC 4.8.2 cross-compiler. Be sure to start this build in a new terminal/tab to avoid any pollution from previous builds.

Because the SBC's that I use, such as Raspberry Pi, Pandaboard, etc., do not utilize an RTC; NTP is a common workaround for keeping track of time. Maybe not the best but it works :-P

Tar Balls


Here is a list of source packages that we'll need for the build. You can either download them now or wait 'til later in the How To.
  • ntp-4.2.6p5.tar.gz

Create a Workspace


I recommend creating a workspace under your /home/<your user>/ directory that is dedicated to this build. So let's fire up your terminal and run the following:
$ export NTP_SRC=~/workbench/ntp/src
$ export NTP_BUILD=~/workbench/ntp/build
$ mkdir -pv ~/workbench/ntp
$ mkdir $NTP_SRC && mkdir $NTP_BUILD
$ cd $NTP_SRC

Gather the Sources


Now that we have a workspace created and we are currently in the src directory we can begin bringing down the sources and extracting them.

ntp

$ wget www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz
$ tar -pxzf ntp-4.2.6p5.tar.gz

Build Environment


To make things a little smoother let's setup some environment variables:
$ export INSTALLDIR=~/workbench/gcc-4.8.2/arm
$ export PATH=$INSTALLDIR/bin:$PATH
$ export TARGETMACH=arm-none-linux-gnueabi
$ export BUILDMACH=i686-pc-linux-gnu
$ export CROSS=arm-none-linux-gnueabi
$ export CC=${CROSS}-gcc
$ export LD=${CROSS}-ld
$ export AS=${CROSS}-as
NOTE: Depending on whether you are using a cross-compiler built from my other wikis you might need to change INSTALLDIR to point to your cross-compiler.

Build NTP


$ cd ../build/
$ ../src/ntp-4.2.6p5/./configure --prefix=/home/<your user>/workbench/ntp/final --host=$TARGETMACH
$ make
$ make install

Output


cd into the final directory and output its contents:
$ cd ../final/
$ ls
You should have the following directories:
  • bin
  • lib
  • sbin
  • share

Make sure the binaries are for ARM:
$ cd bin/
$ file ntpd
bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
If you see something *similar* to above you're good to go ;-)

Lastly, move the contents of these directories, or the directories themselves if they do not already exist, to your custom Linux file system or dev board. Refer here for more info.